﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
// word
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Office.Word;
using DocumentFormat.OpenXml.Wordprocessing;

namespace GUI_Web
{
    public partial class Relatorio : System.Web.UI.Page
    {
        //atributos usados no word
        WordprocessingDocument oDocument;
        MainDocumentPart mainDocumentPart;
        Body documentBody;
        Document documento;

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnGerarRel_Click(object sender, EventArgs e)
        {
            doc();
            string titulo = "Relatório dos eventos de " + txtDataIni.Text + " até " + txtDataFim.Text;
            addTexto(titulo);
            corpo();
            fechaDoc();

            clsUtils.Mensagem(this, "Relatório feito com sucesso.");
        }

        public void doc()       //instancias dos objetos
        {
            documento = new Document();
            documentBody = new Body();
        }

        public void addTexto(string texto)
        {
            Paragraph titleParagraphe = new Paragraph();
            Run titleRun = new Run();
            Text titleText = new Text(texto);

            titleRun.Append(titleText);     //add Text
            titleParagraphe.Append(titleRun);   //add Run 
            documentBody.Append(titleParagraphe);   //add Paragraph no corpo do document
        }

        public void corpo()
        {
            string corpo = "";

            corpo = "   Nome: " + "Prova de matemática " + "    Presença: " + "Confirmado" +
                "   Data: " + "23/09/2011" + Environment.NewLine + Environment.NewLine; //Environment.NewLine: pula linha como \n
            addTexto(corpo);

            corpo = "   Nome: " + "Aula de física " + "    Presença: " + "Ausente" +
                "   Data: " + "13/09/2011" + Environment.NewLine + Environment.NewLine; //Environment.NewLine: pula linha como \n
            addTexto(corpo);

            corpo = "   Nome: " + "Aula de inglês " + "    Presença: " + "Ausente" +
                "   Data: " + "30/09/2011" + Environment.NewLine + Environment.NewLine; //Environment.NewLine: pula linha como \n
            addTexto(corpo);
        }

        public void fechaDoc()
        {
            // cria o documento em um local fixo
            oDocument = WordprocessingDocument.Create(@"C:\Users\Midori\Desktop\relaDoc.docx", WordprocessingDocumentType.Document);
            mainDocumentPart = oDocument.AddMainDocumentPart();

            mainDocumentPart.Document = documento;
            mainDocumentPart.Document.Append(documentBody);     //add o corpo do word

            oDocument.MainDocumentPart.Document.Save();         //salva documento word
            oDocument.Dispose();        //e finalmente fecha xD
        }

        protected void Change(object sender, EventArgs e)
        {
            string dataCalendar = Calendar1.SelectedDate.ToString("dd/MM/yyyy");

            if (rbtnInicio.Checked == true)
            {
                txtDataIni.Text = dataCalendar;
            }
            else if (rbtnFim.Checked == true)
            {
                if (Convert.ToDateTime(txtDataIni.Text) >= Convert.ToDateTime(dataCalendar))
                    clsUtils.Mensagem(this, "Por favos, selecione uma data final após a data inicial");
                else
                {
                    txtDataFim.Text = dataCalendar;
                }
            }
        }
    }
}